Profile picture

[CICD] 무중단 배포 - 이론

Amaranth2023년 10월 15일

이론편

무중단 배포란


일반적으로 이미 운영중인 서비스가 있을 때, 새로운 버전의 서비스를 배포하려면 기존의 서비스를 중단하고 새로운 버전의 서비스를 새로 배포합니다.

이 때 서비스를 중단하고 다시 배포되기 까지 다운 타임이 필연적으로 발생하는데요, 이 다운 타임이 길어질 수록 서비스의 가용성은 떨어지고, 형편없는 사용자 경험을 제공하게 됩니다.

가용성(Availability)

시스템이 서비스를 정상적으로 제공할 수 있는 상태를 의미한다. 항상 서비스할 수 있는 시스템을 가용성이 높은(High-Availability) 시스템이라고 한다.

이 문제를 해결하기 위해 무중단 배포를 도입할 수 있습니다. 무중단 배포란 말 그대로 서비스가 중단되지 않은 상태로 새로운 버전을 배포하는 것을 의미하는데요, 이를 구현하기 위한 전략은 매우 다양합니다.

무중단 배포 전략


무중단 배포를 하기 위해서는 서비스 환경(서버, 도커 컨테이너 등)이 최소 2개 이상 마련되어야 합니다.

롤링(Rolling) 배포

: 트래픽을 점진적으로 구 버전에서 새로운 버전으로 옮기는 방식입니다.

기존에 서버 A, B, C가 이전 버전 v1을 서비스하고 있다고 가정해봅시다.

여기서 새로운 버전 v2를 서비스하는 서버 인스턴스 D를 하나 추가합니다.

그 다음 A 서버에 대해 서비스 v1을 중단하고 서비스 v2를 배포하도록 합니다.

B 서버에 대해서도 같은 작업을 진행합니다.

B 서버까지 배포가 완료되면 C 서버를 제거합니다.

결과적으로 서버 A, B, D가 v2의 서비스를 배포하는 상태가 될 것입니다.

서버 개수를 유연하게 조절할 수 있는 AWS와 같은 클라우드를 기반으로 서비스를 운영할 때 적합한 방식이라고 합니다.

이 때, 서버 D 없이 롤링 배포를 진행할 수도 있습니다. A부터 C까지 차례대로 중단&새 버전 배포를 진행하면 됩니다.

이렇게 하면 클라우드 환경이 아닌 물리적인 서버로 서비스를 운영하는 상황에서도 사용할 수 있습니다.

  • 장점
    • 다른 방식에 비해 많은 서버 자원을 확보하지 않아도 적용할 수 있는 방식입니다.
    • 점진적으로 신 버전을 배포하기 때문에, 신 버전에서 발생한 문제가 일부 사용자에게만 영향을 미치므로 신 버전 배포로 인한 위험을 줄일 수 있습니다.
  • 단점
    • 배포와 동일하게 롤백도 점진적으로 진행하기 때문에 롤백이 느립니다.
    • 배포 도중 서비스중인 인스턴스가 줄어들기 때문에, 각각의 서비스가 부담하는 트래픽의 양이 늘어날 수 있습니다.
    • 무중단 배포 중에는 구 버전과 신 버전의 애플리케이션이 동시에 서비스되기 떄문에 호환성 문제가 발생할 수 있습니다.

Blue/Green 배포

트래픽을 한 번에 구 버전에서 신 버전으로 옮기는 방법입니다.

이 방식에서 쓰이는 용어가 있는데, 현재 운영중인 서비스 환경을 Blue라고 하고, 새롭게 배포할 환경을 Green이라고 합니다.

Blue와 Green의 서버를 동시에 나란히 구성해둔 상태로 두고, 로드밸런서가 트래픽을 Blue에서 Green으로 일제히 전환시키도록 합니다.

이후 Green 버전의 배포가 성공적으로 완료되었고 서비스에 이상이 없음이 확인되면 Blue 서버를 제거하거나 다음 배포를 위해 유지해두면 됩니다.

  • 장점
    • 롤링 배포와 달리 트래픽을 한 번에 새로운 버전으로 옮기기 때문에 호환성 문제가 발생하지 않습니다.
    • 로드 밸런서의 트래픽을 전환해주기만 하면 되므로, 즉시 롤백이 가능합니다.
  • 단점
    • 실제 운영에 필요한 서버 리소스 대비 2배의 서버 리소스를 확보해야 합니다.

카나리(Canary) 배포

이전의 두 배포 방식은 모든 서버에 대한 배포를 일괄적으로 진행하는 반면, 카나리 배포는 트래픽 일부를 신 버전의 서버에 옮겨둔 상태에서 서비스를 일정 기간 운영합니다. 이후 점진적으로 신 버전의 트래픽을 늘려갑니다. 즉, 점진적으로 신 버전의 서비스를 출시하는 것이죠.

  • 장점
    • 새로운 버전으로 인한 위험을 트래픽이 적을 때 발견할 수 있어 안전한 배포가 가능합니다.
    • Blue/Green 배포와 마찬가지로 사용자 트래픽 전환을 통해 빠르게 롤백할 수 있습니다.
  • 단점
    • 점진적 출시마다 적절한 기간동안 모니터링이 필요하기 때문에 전체 출시가 지연될 수 있습니다.
    • 롤링 배포와 마찬가지로, 신 버전과 구 버전의 애플리케이션이 동시에 존재하기 때문에 호환성 문제가 발생할 수 있습니다.

참고 자료


무중단 배포 아키텍처와 배포 전략 (Rolling, Blue/Green, Canary) [MSA]환경 배포 전략 매번 헷갈리는 CI/CD 배포 전략 정리해버리기


Loading script...